/**
 ***********************************************************************************************************
 * 
 ***********************************************************************************************************
 * @file RBVertexBuffer.h
 ***********************************************************************************************************/

#ifndef __RBVERTEXBUFFER_H__
#define __RBVERTEXBUFFER_H__

#ifdef  HEADER_ONCE
#pragma HEADER_ONCE
#endif

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBVertexBuffer.h)
#endif

/***********************************************************************************************************
 * Includes
 ***********************************************************************************************************/
#include "RBHardwareBuffer.h"
#include "RBStream.h"

/***********************************************************************************************************
 * Forward declarations
 ***********************************************************************************************************/

/***********************************************************************************************************
 * Classes
 ***********************************************************************************************************/

class RBVertexBuffer : public RBHardwareBuffer
{
    RBDeclareRTTI(RBVertexBuffer, RBHardwareBuffer);
    RBDeclareHBSerializable(RBVertexBuffer);
public:
				RBVertexBuffer      (uint32 uiUsage, uint32 uiMemPoolMask, RBHardwareBufferManager* pCreator, uint32 uiVertexSize, uint32 uiVertexCount, void* pNative);
    virtual    ~RBVertexBuffer      ();

    uint32      GetVertexSize       () const;
    uint32      GetVertexCount      () const;

    virtual void* Map               (MapType eMapType);
    virtual void Unmap              ();

protected:
    uint32      m_uiVertexSize;
    uint32      m_uiVertexCount;
};

RBDeclareSmartPointer(RBVertexBuffer);


/**************************************************************************************************************************************************************
 * 
 **************************************************************************************************************************************************************/
inline uint32 RBVertexBuffer::GetVertexSize() const
{
    return m_uiVertexSize;
}

/**************************************************************************************************************************************************************
 * 
 **************************************************************************************************************************************************************/
inline uint32 RBVertexBuffer::GetVertexCount() const
{
    return m_uiVertexCount;
}


/***********************************************************************************************************/

#endif // __RBVERTEXBUFFER_H__